clear;clc;
close all;
A=imread('E:\tuxiang_shiyan\zhiliao\Sample_Pictures\lena_gray.bmp');
subplot(231); 
imshow(A); 
title('原图');
B=imnoise(A,'gauss',0.02); 
subplot(232);
imshow(B);     %添加高斯噪声后的图像 
title('添加高斯噪声后的图像');
f=double(B);
s0=fftshift(fft2(f));
s1=fftshift(fft2(f));
s2=fftshift(fft2(f));
s3=fftshift(fft2(f));
[M,N]=size(s0); 
n1=floor(M/2);                     %对M/2进行取整 
n2=floor(N/2); 
d0=20;
d1=50;
for i=1:M           
    for j=1:N     
       d=sqrt((i-n1)^2+(j-n2)^2);       %点（i,j）到傅立叶变换中心的距离           
       h=1-(1*exp(-1/2*(d^2/d0^2)));        %GLPF滤波函数
       h1=1-(1*exp(-1/2*(d^2/d1^2)));       %GLPF滤波函数 
       h2=1-(1/(1+0.414*(d/d0)^(2*2)));
       h3=1-(1/(1+0.414*(d/d1)^(2*2)));
       s0(i,j)=h*s0(i,j);               %GLPF滤波后的频域表示                 
       s1(i,j)=h1*s1(i,j);              %GLPF滤波后的频域表示
       s2(i,j)=h2*s2(i,j);
       s3(i,j)=h3*s3(i,j);
    end
end
s0=ifftshift(s0);                            
s0=uint8(real(ifft2(s0)));    
subplot(233);                      %创建图形图像对象 
imshow(s0);
title('理想低通滤波器 d=20的结果');
s1=ifftshift(s1);                            
s1=uint8(real(ifft2(s1)));    
subplot(234);                      %创建图形图像对象 
imshow(s1);
title('理想低通滤波器 d=50的结果');
s2=ifftshift(s2);                            
s2=uint8(real(ifft2(s2)));    
subplot(235);                      %创建图形图像对象 
imshow(s2);
title('Butterworth低通滤波器 d=20的结果');
s3=ifftshift(s3);                            
s3=uint8(real(ifft2(s3)));    
subplot(236);                      %创建图形图像对象 
imshow(s3);
title('Butterworth低通滤波器 d=50的结果');